\chapter{Przykłady innych grafowych baz danych}
%\chapterWithAuthor{Przykłady innych grafowych baz danych}{Jakub Pawłot}
\label{chap:inneBazyGrafowe}

\section{Cechy charakterystyczne wybranych rozwiązań}
\subsection{FlockDB}
\emph{FlockDB} to grafowa baza danych o otwartych źródłach, wykorzystywana przez portal Twitter do zarządzania danymi użytkowników i relacjami między nimi (śledzenie, blokowanie). Według jej twórców jest zorientowana na dużą liczbę operacji dodawania, usuwania lub aktualizacji danych. Obsługuje również skomplikowane zapytania, zwracające nawet miliony elementów. Udostępnia także mechanizm archiwizacji węzłów i ewentualnego ich przywracania.  Baza jest skalowalna poziomo, zaś mechanizm skalowania obejmuje między innymi replikację. Twórcy określają \emph{FlockDB} jako bazę zdecydowanie prostszą niż na przykład \emph{neo4j}, przeznaczoną głównie do zastosowania w serwisach internetowych, mniej uniwersalną.\footnote{https://github.com/twitter/flockdb}

\subsection{AllegroGraph}
\emph{AllegroGraph}  jest przeznaczona do przechowywania danych RDF (\emph{Resource Description Framework}, język do opisu zasobów sieci www, oparty na XML-u), czyli wiedzy w formie łatwej do zinterpretowania i~przetwarzania przez komputery. Baza spełnia standardy W3C. Wykorzystując ją można tworzyć aplikacje \emph{semantic web}, potrafiące między innymi przeprowadzać wnioskowanie na podstawie posiadanych informacji, zdobytych dzięki przeszukiwaniu sieci. Dane w bazie przechowywane są w trójkach \emph{przedmiot-predykat-obiekt}, każda trójka reprezentuje jedną krawędź grafu. \emph{AllegroGraph} implementuje właściwości ACID (atomowość, spójność, izolacja, trwałość), typowe dla relacyjnych baz danych. Wśród użytkowników bazy jest między innymi firma farmaceutyczna Pfizer, wykorzystująca ją do przechowywania informacji dotyczących opracowywanych leków.\footnote{http://www.franz.com/agraph/allegrograph/}

\subsection{Sones GraphDB}
\emph{Sones GraphDB} służy do przechowywania dużych zbiorów danych w formie grafów. Twórcy bazy stworzyli własny język zapytań odpowiedni do grafowej struktury danych, podobny do języka SQL, aby ułatwić użytkownikom przejście z relacyjnej bazy danych na grafową. \emph{Sones GraphDB} składa się z czterech niezależnych warstw, odpowiedzialnych kolejno za rozproszone przechowywanie danych, logikę i~funkcjonalność bazy danych, interpretację zapytań i~interfejs dla użytkownika. Udostępnione są interfejsy dla różnych języków programowania, REST API i~Traversal API. Baza jest dostępna na platformie chmurowej \emph{Windows Azure}.\footnote{http://developers.sones.de/wiki/doku.php} 

\subsection{InfiniteGraph}
Według twórców, \emph{InfiniteGraph} ma pomagać firmom w~analizie i~wyszukiwaniu skomplikowanych zależności w~danych o~dużej objętości (setki miliardów węzłów), na przykład pochodzących z~serwisów społecznościowych. Baza jest zoptymalizowana do szybkiego i~efektywnego wykonywania zapytań polegających na przechodzeniu grafu. CIA wykorzystuje InfiniteGraph do analizy danych wywiadowczych, a~do użytkowników należy również między innymi armia Stanów Zjednoczonych i~firma Boeing. \emph{InfiniteGraph} implementuje właściwości ACID i jest skalowalna poziomo. Baza jest dostępna na platformach chmurowych \emph{GoGrid}, \emph{Amazon EC2} i~\emph{Right Scale}.\footnote{http://www.infinitegraph.com/product/}

\subsection{DEX}
\emph{DEX} jest grafową bazą danych ogólnego przeznaczenia o wysokiej wydajności, przeznaczoną do przechowywania dużych grafów (miliardy obiektów). Dane przechowywane są w postaci etykietowanego i~skierowanego multigrafu, można je przeszukiwać za pomocą różnorodnych zapytań, takich jak na przykład badanie połączeń, sieci społecznościowych lub rozpoznawanie wzorców zawartych w strukturze grafu. Baza pozwala również na wizualizację grafów w różnych formatach. Częściowo implementowane są właściwości ACID (spójność i izolacja).\footnote{http://www.sparsity-technologies.com/dex}

\subsection{InfoGrid}
\emph{InfoGrid} udostępnia API grafowej bazy danych, wykorzystując jednocześnie system przechowywania danych oparty na SQL. Atomowe jednostki informacji, czyli węzły grafu, nazwane zostały przez twórców \emph{MeshObjects}. Mogą one należeć do jednej z klas (\emph{EntityTypes}), zawierać właściwości i~uczestniczyć w~związkach z innymi obiektami. Oznaczane są przez unikalne identyfikatory. \footnote{\url{http://infogrid.org/trac/wiki/GraphDatabase}}

\subsection{HyperGraphDB}
Baza danych \emph{HyperGraphDB} została stworzona głównie do zastosowań związanych z reprezentacją wiedzy, sztuczną inteligencją i~\emph{semantic web}, może być jednak używana również w projektach niezwiązanych z wyżej wymienionymi dziedzinami. Jest oparta na skierowanych hipergrafach, czyli grafach zawierających krawędzie łączące ze sobą więcej niż dwa wierzchołki. HyperGraphDB pozwala nawet na tworzenie krawędzi wskazujących inne krawędzie. \footnote{\url{http://www.hypergraphdb.org/index}}

\section{Porównanie rozwiązań}
W tablicy~\ref{table:PorownanieBaz} zostało przedstawione porównanie systemów grafowych baz danych. 

\begin{sidewaystable}
\begin{tabular}{rlp{5cm}p{4cm}lp{1.5cm}l} \toprule
\textbf{Baza danych} & Główne przeznaczenie & Model danych  & Maksymalna wielkość \newline(wierzchołki grafu) & Rozproszona & Otwarte \newline źródła & Napisana w    \\ \midrule
\emph{neo4j} & ogólne  & etykietowany i skierowany \newline multigraf & miliardy &tak & tak & Java \\
\emph{FlockDB} & sieci społecznościowe & skierowany graf &miliardy & tak & tak & Scala, Java, Ruby  \\
\emph{AllegroGraph} & semantic web & krotki RDF & miliardy & tak & nie & Common Lisp\\
\emph{InfoGrid} & ogólne & etykietowany i skierowany \newline multigraf & ? & tak  & tak & Java  \\
\emph{DEX} & ogólne & etykietowany i skierowany \newline multigraf & miliardy & nie  & nie & Java/C++\\
\emph{Sones} & ogólne & etykietowany i skierowany\newline multigraf & ? & tak & nie & C\#  \\
\emph{infiniteGraph}& ogólne  & etykietowany i skierowany \newline multigraf & setki miliardów & tak & nie & Java/C++ \\
\emph{HyperGraphDB} & reprezentacja wiedzy & hipergraf  & ? & tak & tak & Java\\ \bottomrule
\end{tabular}
\caption{Porównanie grafowych baz danych}
\label{table:PorownanieBaz}
\end{sidewaystable}

